package view

import (
	"customer/src/model"
	"customer/src/service"
	"fmt"
	"time"
)

type CustomerView struct {
	Key  string //选项
	Loop bool
}

func (view *CustomerView) CustomerMainView() {
	var name, gender, email, phone string
	var age, id int
	var flag string
	customerService := service.CustomerService{}
	for {
		fmt.Println("-----------------客户信息管理软件-----------------")
		fmt.Println("                   1.添加客户                    ")
		fmt.Println("                   2.修改客户                    ")
		fmt.Println("                   3.删除客户                    ")
		fmt.Println("                   4.客户列表                    ")
		fmt.Println("                   5.退   出                    ")
		fmt.Println("请选择（1-5）---")

		fmt.Scanln(&view.Key)

		switch view.Key {
		case "1":
			fmt.Println("添加客户")
			fmt.Print("输入客户姓名：")
			fmt.Scanln(&name, "\n")
			fmt.Print("输入客户性别：")
			fmt.Scanln(&gender)
			fmt.Print("输入客户电话：")
			fmt.Scanln(&phone)
			fmt.Print("输入客户邮箱：")
			fmt.Scanln(&email)
			fmt.Print("输入客户年龄：")
			fmt.Scanln(&age)
			customer := model.NewCustomer(name, gender, age, phone, email)
			add := customerService.Add(customer)
			if add {
				fmt.Println("添加成功")
			} else {
				fmt.Println("添加失败")
			}
		case "2":
			fmt.Println("修改客户")
			fmt.Println("请输入要修改的用户Id:")

			fmt.Scanln(&id)
			customer, index := customerService.UpdateView(id)
			fmt.Printf("name=(%v)（直接按回车表示不修改） :", customer.Nmae)
			fmt.Scanln(&name)
			fmt.Printf("gender=(%v) :", customer.Gender)
			fmt.Scanln(&gender)
			fmt.Printf("phone=(%v) :", customer.Phone)
			fmt.Scanln(&phone)
			fmt.Printf("email=(%v) :", customer.Email)
			fmt.Scanln(&email)
			fmt.Printf("age=(%v) :", customer.Age)
			fmt.Scanln(&age)

			update := customerService.Update(name, gender, phone, email, age, index)
			if update {
				fmt.Println("修改成功")
			} else {
				fmt.Println("修改失败")
			}
		case "3":
			fmt.Println("删除客户")
			fmt.Print("请输入要删除的用户id:")
			fmt.Scanln(&id)
			b := customerService.Delete(id)
			if b {
				fmt.Println("删除成功")

			} else {
				fmt.Println("删除失败")
			}
		case "4":
			fmt.Println("客户列表")
			customerService.ForEach()
			time.Sleep(time.Millisecond * 5000)
		case "5":
			for {

				fmt.Print("确认是否退出（Y/N）：")
				fmt.Scanln(&flag)

				if flag == "Y" || flag == "y" {
					view.Loop = false
					break
				} else if flag == "N" || flag == "n" {
					fmt.Println("继续使用系统")
					break
				}
			}

		default:
			fmt.Println("请输入正确指令~~~")
		}

		if !view.Loop {
			break
		}
	}

	fmt.Println("退出客户管理系统成功")
}
